در لینوکس، هر دستوری که در ترمینال اجرا میکنید، در یک لیست به نام تاریخچه (History)
ذخیره میشود. این قابلیت به شما کمک میکند تا دستورات قبلی را مرور، ویرایش و دوباره اجرا کنید
بدون اینکه نیاز به تایپ مجدد داشته باشید. فرمان history
ابزاری قدرتمند برای مدیریت این تاریخچه است.
history یک دستور built-in در Bash است که
لیست دستورات اجرا شده را با شماره نمایش میدهد و امکان مدیریت آنها را فراهم میکند. [citation:1][citation:6]
با اجرای ساده history، تمام دستورات اجرا شده در جلسه جاری به همراه شماره آنها نمایش داده میشود. [citation:1]
خروجی شامل شماره و خود دستور است. [citation:14]
با دادن یک عدد به history، فقط تعداد مشخصی از آخرین دستورات نمایش داده میشود. [citation:1][citation:4]
فقط ۵ دستور آخر را نشان میدهد. [citation:9]
با استفاده از علامت ! و شماره تاریخچه، میتوانید یک دستور را دوباره اجرا کنید. [citation:4][citation:9]
برای جستجوی تعاملی در تاریخچه، کلید ترکیبی Ctrl + R را بزنید و شروع به تایپ کنید. Bash به صورت پویا مطابقتها را نشان میدهد. [citation:11][citation:15]
اگر میخواهید یک دستور در تاریخچه ذخیره نشود، کافی است یک فاصله خالی
قبل از آن قرار دهید. (این قابلیت باید با HISTCONTROL=ignorespace فعال باشد). [citation:9]
با گذاشتن فاصله قبل از دستور، آن را از تاریخچه حذف میکند. [citation:6][citation:9]
متغیر HISTFILE مسیر فایلی را نشان میدهد که تاریخچه در آن ذخیره میشود. [citation:3][citation:5]
معمولاً این فایل در دایرکتوری خانه کاربر قرار دارد. [citation:14]
میتوانید با تغییر متغیر HISTFILE، مسیر فایل تاریخچه را تغییر دهید. [citation:3][citation:5]
فرمان history گزینههای مختلفی دارد که مدیریت تاریخچه را آسانتر میکنند. [citation:1][citation:3]
| گزینه | توضیح |
|---|---|
-c |
پاک کردن کامل تاریخچه جلسه جاری. (تاریخچه موجود در فایل تا زمان خروج ذخیره نمیشود) [citation:1][citation:3][citation:6] |
-d offset |
حذف یک دستور خاص با شماره مشخص.
(مثلاً history -d 5 دستور شماره ۵ را حذف میکند) [citation:1][citation:3][citation:5]
|
-d start-end |
حذف یک بازه از دستورات از شماره start تا end.
(مثلاً history -d 10-20) [citation:5][citation:8]
|
-a |
افزودن دستورات جدید جلسه جاری به فایل تاریخچه. (بدون اینکه منتظر بسته شدن جلسه باشد) [citation:1][citation:3][citation:14] |
-n |
خواندن دستوراتی که تاکنون خوانده نشدهاند از فایل تاریخچه و افزودن آنها به لیست جاری. [citation:1][citation:3][citation:5] |
-r |
خواندن کل فایل تاریخچه و افزودن آن به لیست جاری. [citation:1][citation:3][citation:14] |
-w |
نوشتن تاریخچه جاری در فایل تاریخچه. (محتوای قبلی فایل بازنویسی میشود) [citation:1][citation:3][citation:14] |
-p |
پیشنمایش نتیجه بسط تاریخچه بدون اجرا یا ذخیرهسازی. (برای تست قبل از اجرا) [citation:3][citation:5][citation:14] |
-s |
افزودن یک دستور به تاریخچه بدون اجرا کردن آن. (برای شبیهسازی یا پر کردن تاریخچه) [citation:3][citation:5][citation:14] |
همه دستورات جلسه جاری را حذف میکند. [citation:1][citation:6]
دستور شماره ۱۰ را حذف میکند. [citation:3][citation:5]
تاریخچه جاری را در ~/.bash_history ذخیره میکند. [citation:1][citation:14]
محتوای فایل تاریخچه را به جلسه جاری اضافه میکند. [citation:1][citation:3]
history → نمایش لیست دستورات با شماره!number → اجرای دستور با شماره مشخصhistory -c → پاک کردن تاریخچه جلسه جاریhistory -d → حذف یک دستور خاصhistory -w → ذخیره تاریخچه در فایلhistory -r → خواندن تاریخچه از فایلhistory -a → افزودن دستورات جدید به فایلhistory -n → خواندن دستورات خوانده نشده از فایلhistory -p → پیشنمایش بسط تاریخچهhistory -s → افزودن دستور به تاریخچه بدون اجرا
۱. با history تاریخچه خود را مشاهده کنید.
۲. با !شماره یک دستور خاص را دوباره اجرا کنید.
۳. با گذاشتن فاصله قبل از یک دستور، آن را از تاریخچه مخفی کنید.
۴. با echo $HISTFILE مسیر فایل تاریخچه را ببینید.
۵. با history -c تاریخچه جلسه جاری را پاک کنید.
۶. با history -d 5 دستور شماره ۵ را حذف کنید.